package src;

/*
自定义注解:

public @interface 注解名称 {
   public 属性类型 属性名() default 默认值;
}

* */
public @interface Demo {
    public int size() default 3;
}

/*
*  注解的本质是一个接口,该接口实现了Annotation接口
*  @注解(....) : 其实就是一个实现类对象,实现了该注解以及Annotation接口
* */


/*
 元注解: 修饰注解的注解
 @Target: 声明被修饰的注解只能在哪些位置使用

 @Target(ElementType.TYPE)
    1.TYPE，类,接口

    2.FIELD，成员变量

    3.METHOD，成员方法

    4.PARAMETER,方法参数

    5.CONSTRUCTOR,构造器

    6.LOCAL_VARIABLE,局部变量

 @retention 声明注解的保留周期
 @retention(retentionPolicy.Runtime)

    1.SOURCE 只作用在源码阶段,字节码文件中不存在

    2.class(默认值) 保留到字节码文件阶段,运行期间不存在

    3.Runtime(开发常用) 保留到运行阶段

* */



